//每次发送请求代码相同 抽离出一样的部分 封装成函数
axios.defaults.baseURL = 'http://api-breakingnews-web.itheima.net'
// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log(config)
    // config.headers.Authorization = localStorage.getItem('big-event-token')
    //my开头的api请求才需要添加token
    if (config.url.startsWith('/my')) {
      config.headers.Authorization = localStorage.getItem('big-event-token')
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    const {
      data: { message, status },
    } = response
    if (status === 0) {
      layer.msg(message)
    }
    if (status === 1) {
      localStorage.removeItem('big-event-token')
      location.href = '/login.html'
    }
    return response
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

//封装注册的api接口函数 用的是高阶函数 类似回调函数 函数的cb形参是一个函数 内部cb函数执行 然后把res当做实参传给cb这个函数 ，外部用res接收一下 此时内部的res 就被传到了外部
function reqPostRegister(obj, cb) {
  axios({
    method: 'post',
    url: 'http://api-breakingnews-web.itheima.net/api/reguser',
    data: handleDataFormat(obj),
  }).then((res) => {
    cb(res)
  })
}

//封装登录的api接口函数
const reqPostLogin = (obj) => {
  //return 出去的是一个promise对象
  return axios({
    method: 'post',
    url: 'http://api-breakingnews-web.itheima.net/api/login',
    data: handleDataFormat(obj),
  })
}

// 封装获取个人信息的接口函数
const reqGetUserInfo = () => {
  return axios({
    method: 'get',
    url: '/my/userinfo',
    // headers: { Authorization: localStorage.getItem('big-event-token') },
  })
}

//封装更新用户信息的接口函数
const reqPostUpdateUserInfo = (obj) => {
  return axios({
    method: 'post',
    url: '/my/userinfo',
    data: handleDataFormat(obj),
  })
}

//封装重置密码的接口函数
const reqPostRePwd = (obj) => {
  return axios({
    method: 'post',
    url: '/my/updatepwd',
    data: handleDataFormat(obj),
  })
}

//封装更换头像的api接口函数
const reqPostUpdatePic = (obj) => {
  return axios({
    method: 'post',
    url: '/my/update/avatar',
    data: handleDataFormat(obj),
  })
}

//获取文章分类列表的api接口函数
const reqGetCates = () => {
  return axios({
    method: 'get',
    url: '/my/article/cates',
  })
}

//封装新增文章分类的api接口函数
const reqAddCate = (obj) => {
  return axios({
    method: 'post',
    url: '/my/article/addcates',
    data: obj,
  })
}

//封装删除分类的api接口函数
const delCateAPI = (id) => {
  return axios({
    method: 'get',
    url: `/my/article/deletecate/${id}`,
    data: id,
  })
}

//封装编辑分类的api接口函数
const updateCateAPI = (obj) => {
  return axios({
    method: 'post',
    url: '/my/article/updatecate',
    data: obj,
  })
}
